//
//  NSParagraphStyle.swift
//  Documentation
//
//  Created by Toj on 1/12/23.
//

@available(iOS 6.0, *)
open class NSParagraphStyle : NSObject, NSCopying, NSMutableCopying, NSSecureCoding {
    
    // 这类方法返回一个缓存共享和NSParagraphStyle实例使用默认风格设置,
    // 与[[NSParagraphStyle alloc]init]有相同值的结果.
    @NSCopying open class var `default`: NSParagraphStyle { get }
    
    // 书写方向, languageName在ISO书写格式
    open class func defaultWritingDirection(forLanguage languageName: String?) -> NSWritingDirection
    
    // 字体的行间距
    open var lineSpacing: CGFloat { get }
    
    // 段落之间的间距
    open var paragraphSpacing: CGFloat { get }
    
    // 对齐方式
    open var alignment: NSTextAlignment { get }
    
    // 除每段第一行以外的缩进
    open var headIndent: CGFloat { get }
    // 从页边距到段落后边缘的距离; 如果为负或0, 则从其他边距开始
    open var tailIndent: CGFloat { get }
    // 每段首行缩进
    open var firstLineHeadIndent: CGFloat { get }
    
    // 最低行高(设置最低行高后, 如果文本小于20行, 会通过增加行间距达到20行的高度)
    open var minimumLineHeight: CGFloat { get }
    // 最高行高(设置最高行高后, 如果文本大于10行, 会通过降低行间距达到10行的高度)
    open var maximumLineHeight: CGFloat { get }
    
    // 内容显示不完全时的省略方式
    open var lineBreakMode: NSLineBreakMode { get }
    
    // 段落方向
    open var baseWritingDirection: NSWritingDirection { get }
    
    // 行高倍数,
    // 在受到最小和最大行高约束之前, 自然线高度乘以该因子(如果为正) 多少倍行间距
    open var lineHeightMultiple: CGFloat { get }
    // 段落顶部与文本内容开头之间的距离
    open var paragraphSpacingBefore: CGFloat { get }
    
    
    // 指定连字符的阈值. 有效值介于0.0和1.0之间.
    // 当不使用连字符的断行文本宽度与行片段宽度的比值小于连字符因子时, 将尝试使用连字符.
    // 当它的默认值为0.0时, 将使用布局管理器的连字符因子.
    // 当两者都为0.0时, 将禁用连字符.
    open var hyphenationFactor: Float { get }
    
    //控制与段落样式相关联的段落的连字符行为的属性.
    // 确切的连字符逻辑由布局上下文(如语言、平台等)动态决定.
    // 当YES时, 当属性设置为0.0时, 它会影响-hyphenationFactor的返回值.
    @available(iOS 15.0, *)
    open var usesDefaultHyphenation: Bool { get }
    
    // 一组NSTextTabs. 内容应按位置排序.
    // 默认值是一个由12个左对齐制表符组成的数组, 间隔为28pt
    
    @available(iOS 7.0, *)
    open var tabStops: [NSTextTab] { get }
    
    // 默认Tab 宽度
    @available(iOS 7.0, *)
    open var defaultTabInterval: CGFloat { get }
    
    // 一个布尔值，指示系统在截断文本之前是否可以收紧字符间间距
    @available(iOS 9.0, *)
    open var allowsDefaultTighteningForTruncation: Bool { get }
    
    
    @available(iOS 9.0, *)
    open var lineBreakStrategy: NSParagraphStyle.LineBreakStrategy { get } // Specifies the line break strategies that may be used for laying out the paragraph.  The default value is NSLineBreakStrategyNone.
}
